2323. Числа из цифр

 

Дано целое неотрицательное число n. Составьте из всех его цифр наибольшее, а затем наименьшее число. Выведите сумму этих двух чисел.

Например, для n = 56002 наибольшим будет 65200, а наименьшим 256 (ведущие нули в числе 00256 не учитываются). Искомая сумма равна 65200 + 256 = 65456.

 

Вход. Одно целое число n (0 ≤ n ≤ 108).

 

Выход. Выведите сумму наибольшего и наименьшего чисел, которые можно получить из числа n перестановкой его цифр.

 

Пример входа

Пример выхода

56002

65456

 

 

РЕШЕНИЕ

сортировка

 

Анализ алгоритма

Читаем входное число в символьный массив. Отсортируем его цифры по убыванию – получим наибольшее число и запишем его в переменную a. Затем отсортируем цифры по возрастанию – получим наименьшее число и запишем его в переменную b. После этого вычислим сумму чисел a и b.

 

Реализация алгоритма

Строку s используем для хранения входного числа.

 

char s[20];

 

Читаем входное число и сохраняем его в символьный массив s.

 

gets(s);

 

Сортируем цифры по убыванию и записываем полученное максимальное число в переменную a.

 

sort(s,s + strlen(s),greater<char>());

sscanf(s,"%d",&a);

 

Затем сортируем цифры по возрастанию и записываем полученное минимальное число в переменную b.

 

sort(s,s + strlen(s),less<char>());

sscanf(s,"%d",&b);

 

Выводим сумму чисел.

 

printf("%d\n", a + b);

 

Реализация алгоритма – string

Читаем входное число как строку.

 

cin >> s;

 

Сортируем цифры по убыванию и записываем полученное максимальное число в переменную a.

 

sort(s.begin(),s.end(),greater<char>());

a = stoi(s);

 

Затем сортируем цифры по возрастанию и записываем полученное минимальное число в переменную b.

 

sort(s.begin(),s.end(),less<char>());

b = stoi(s);

 

Выводим сумму чисел.

 

cout << a + b << endl;

 

Java реализация

 

import java.util.*;

 

public class Main

{

  public static void main(String[] args)

  {

    Scanner con = new Scanner(System.in);

    String s[] = con.nextLine().split("");

    // s = {"1", "2", "3", "4", "5", "6"}

   

    Arrays.sort(s);

    int a = Integer.parseInt(String.join("", s));

   

    Arrays.sort(s,Collections.reverseOrder());

    int b = Integer.parseInt(String.join("", s));

   

    System.out.println(a + b);

    con.close();

  }

}

 

Java реализация – stringbuilder reverse

 

import java.util.*;

 

public class Main

{

  public static void main(String[] args)

  {

    Scanner con = new Scanner(System.in);

    char s[] = con.next().toCharArray();

    Arrays.sort(s);

    int a = Integer.parseInt(String.valueOf(s));

   

    String sr = new

      StringBuilder(String.valueOf(s)).reverse().toString();

    int b = Integer.parseInt(sr);

   

    System.out.println(a + b);

    con.close();

  }

}

 

Python реализация

Читаем входное число как строку и сортируем символы этой строки в порядке возрастания, возвращая список символов.

 

n = sorted(input())

 

Складываем полученное число с его зеркальной версией.

 

print(int(''.join(n)) + int(''.join(n)[::-1]))